Skip to content

fix(docker): repair the Dockerfile as a legacy BNG2.pl image (#414)#445

Merged
wshlavacek merged 2 commits into
mainfrom
fix/414-dockerfile-bng2pl
Jun 24, 2026
Merged

fix(docker): repair the Dockerfile as a legacy BNG2.pl image (#414)#445
wshlavacek merged 2 commits into
mainfrom
fix/414-dockerfile-bng2pl

Conversation

@wshlavacek

Copy link
Copy Markdown
Collaborator

Summary

Fixes the broken/stale Dockerfile (#414) via Direction A — a legacy BNG2.pl image that builds end-to-end on Linux today.

What was broken

The runtime stage ran pip install on the PyBNF wheel without --no-deps, so pip re-resolved PyBNF's full dependency set — including bngsim>=0.5.0,<1, a private macOS-only wheel with no public Linux build. The image could not build on Linux.

Changes

  • Runtime install: install PyBNF's public runtime deps explicitly, then pip install --no-deps the wheel — mirroring .github/actions/setup-pybnf. bngsim is intentionally omitted; PyBNF imports cleanly without it and falls back to the BNG2.pl backend.
  • BioNetGen: replace the from-source compile (make_dist.pl --build) with the official prebuilt Linux tarball (BioNetGen-2.9.3-linux.tar.gz: BNG2.pl + bundled run_network/NFsim). Faster, no autoconf/cmake/ninja toolchain.
  • Python: default to 3.13 (now supported; CI tests it).
  • Docs: header now states the image is the legacy BNG2.pl backend and why bngsim is absent; dropped the stale bngsim private-index escape hatch.
  • CI: new .github/workflows/docker.yml builds + smoke-tests the image (on demand, and on Dockerfile/pyproject.toml changes) so it can't rot silently again.

Acceptance criteria (#414)

  • docker build succeeds end-to-end on Linux (no dependency on a nonexistent bngsim Linux wheel) — verified by the docker workflow on this PR.
  • Intended backend documented (legacy BNG2.pl) and matches what's installed.
  • Python version reviewed against current support (3.13).
  • A CI job builds the image so it can't rot silently.

Closes #414

The runtime stage ran `pip install` on the PyBNF wheel WITHOUT --no-deps, so
pip re-resolved the full dependency set including `bngsim>=0.5.0,<1` -- a
private, macOS-only wheel with no public Linux build. The image could not build
end-to-end on Linux.

Direction A (legacy BNG2.pl image, works today):
- Install PyBNF's public runtime deps explicitly, then `pip install --no-deps`
  the wheel, mirroring .github/actions/setup-pybnf. bngsim is intentionally
  omitted; PyBNF imports cleanly without it and uses the BNG2.pl backend.
- Replace the from-source BioNetGen compile with the official prebuilt Linux
  tarball (BNG2.pl + bundled run_network/NFsim binaries) -- faster, no
  autoconf/cmake/ninja toolchain.
- Default to Python 3.13 (now supported).
- Document the image's backend (legacy BNG2.pl) in the header; drop the stale
  bngsim private-index escape hatch.

Add .github/workflows/docker.yml to build and smoke-test the image (on demand,
and on Dockerfile/pyproject changes) so it can't rot silently again.

Closes #414
`bash -lc` re-sources /etc/profile, which resets PATH to the Debian default
and drops the image's BNGPATH entry, so `command -v BNG2.pl` failed even though
BNG2.pl (0755) is correctly installed and on PATH. Use a non-login `bash -c`
that inherits the container's ENV PATH.
@wshlavacek wshlavacek merged commit 36d0b4e into main Jun 24, 2026
6 checks passed
@wshlavacek wshlavacek deleted the fix/414-dockerfile-bng2pl branch June 24, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dockerfile is broken/outdated: runtime install requires bngsim (no Linux wheel) and bundles only legacy BNG2.pl

1 participant